//
//    Логическая игра "Спички"
////

import java.util.Random;
import java.util.Scanner;
import java.util.InputMismatchException;

public class Matches {
    static int readIntInRange(int lowerBound, int upperBound) {
        int number;

        for(;;) {
            Scanner input = new Scanner(System.in);
            try {
                number = input.nextInt();

                if (number < lowerBound || number > upperBound) {
                    System.out.println("Необходимо ввести число от " + lowerBound + " до " + upperBound);
                    System.out.print("повторите ввод: ");
                    continue;
                }
            }
            catch (final InputMismatchException e) {
                System.out.print("повторите ввод: ");
                continue;
            }

            break;
        }

        return number;
    }
    
    static int randomInRange(int lowerBound, int upperBound) {
        Random rand = new Random();
        return rand.nextInt(upperBound - lowerBound + 1) + lowerBound;
    }
    
    static int min(int a, int b) {
        return (a < b) ? a : b;
    }
    
    static String loc_Matches(int n) {
        if (n == 1)
            return "спичку";
        else
            return "спички";
    }

    public static void main(String[] args) {
        int matchesCount = 20;
        System.out.println("------------------------------------------");
        System.out.println("Сейчас на столе лежит 20 спичек,");
        System.out.println("вы можете брать 1, 2, 3 или 4 спички,");
        System.out.println("кто возьмет последнюю спичку тот проиграет");
        System.out.println("------------------------------------------");
        
        for (;;) {
            System.out.print("Сколько спичек вы возьмете? ");
            int userAmmount = readIntInRange(1, min(4, matchesCount));

            matchesCount -= userAmmount;

            if (matchesCount == 0) {
                System.out.println("Вы проиграли");
                break;
            }

            int computerAmmount = matchesCount - ((matchesCount - 1) / 5 * 5 + 1);

            if (computerAmmount == 0)
                computerAmmount = randomInRange(1, min(4, matchesCount));
            
            matchesCount -= computerAmmount;

            System.out.println("Компьютер взял " + computerAmmount + " " + loc_Matches(computerAmmount) + ", остальсь: " + matchesCount);

            if (matchesCount == 0) {
                System.out.println("Вы выиграли!!!");
                break;
            }
        }
    }
}
